package oo;

/**
 * @author Pinky
 * @version 1.0
 * @created 30-jun-2013 01:38:14 a.m.
 */
public class Sistema implements InterfazSistema {

	private boolean estadoRobot1 = true;
	private boolean estadoRobot2 = true;
	private boolean estadoRobot3 = true;
	
	private boolean estadoInput1 = true;
	private boolean estadoInput2 = true;
	private boolean estadoInput3 = true;
	

	private boolean estadoOutput1 = true;
	private boolean estadoOutput2 = true;
	private boolean estadoOutput3 = true;
	

	private boolean estadoMaquina1 = true, estadoM1_Lugar1 = true, estadoM1_Lugar2 = true;
	private boolean estadoMaquina2 = true, estadoM2_Lugar1 = true, estadoM2_Lugar2 = true ;
	private boolean estadoMaquina3= true, estadoM3_Lugar1 = true, estadoM3_Lugar2 = true;
	private boolean estadoMaquina4= true, estadoM4_Lugar1 = true, estadoM4_Lugar2 = true;
	

	private InterfazRobot r1;
	private InterfazRobot r2;
	private InterfazRobot r3;
	
	private InterfazInput i1;
	private InterfazInput i2;
	private InterfazInput i3;
	
	private InterfazMaquina m1;
	private InterfazMaquina m2;
	private InterfazMaquina m3;
	private InterfazMaquina m4;
	

	private InterfazOutput o1;
	private InterfazOutput o2;
	private InterfazOutput o3;


	public Sistema(InterfazRobot _r1,InterfazRobot _r2,InterfazRobot _r3, InterfazInput _i1, InterfazInput _i2,InterfazInput _i3,InterfazMaquina _m1, InterfazMaquina _m2, InterfazMaquina _m3, InterfazMaquina _m4,InterfazOutput _o1,InterfazOutput _o2,InterfazOutput _o3){

		this.r1= _r1;
		r1.registerObserver(this);
		this.r2= _r2;
		r2.registerObserver(this);
		this.r3= _r3;
		r3.registerObserver(this);
		
		this.i1= _i1;
		i1.registerObserver(this);
		this.i2= _i2;
		i2.registerObserver(this);
		this.i3= _i3;
		i3.registerObserver(this);
		

		this.o1= _o1;
		o1.registerObserver(this);
		this.o2= _o2;
		o2.registerObserver(this);
		this.o3= _o3;
		o3.registerObserver(this);

		this.m1= _m1;
		m1.registerObserver(this);
		this.m2= _m2;
		m2.registerObserver(this);
		this.m3= _m3;
		m3.registerObserver(this);
		this.m4= _m4;
		m4.registerObserver(this);	

		
	}
	
	public void updateRobot(boolean x, int _id){
		switch (_id){
		case 1:
			this.estadoRobot1 = x;
			break;
		case 2:
			this.estadoRobot2 = x;
			break;
		case 3:
			this.estadoRobot3 = x;
			break;
		}
	}
	
	public boolean getEstadoRobot(int _id){
		boolean aux = true;
		switch (_id){
		case 1:
			aux= estadoRobot1;
			break;
		case 2:
			aux= estadoRobot2;
			break;
		case 3:
			aux= estadoRobot3;
			break;
		}
		return aux;
	}
	
	public void updateInput(boolean x, int _id){
		switch (_id){
		case 1:
			this.estadoInput1 = x;
			break;
		case 2:
			this.estadoInput2 = x;
			break;
		case 3:
			this.estadoInput3 = x;
			break;
		}
	}	
	public void updateOutput(boolean x, int _id){
		switch (_id){
		case 1:
			this.estadoOutput1 = x;
			break;
		case 2:
			this.estadoOutput2 = x;
			break;
		case 3:
			this.estadoOutput3 = x;
			break;
		}
	}	
	public boolean getEstadoOutput(int _id){
		boolean aux = true;
		switch (_id){
		case 1:
			aux= estadoOutput1;
			break;
		case 2:
			aux= estadoOutput2;
			break;
		case 3:
			aux= estadoOutput3;
			break;
		}
		return aux;
	}
	
	public boolean getEstadoIntput(int _id){
		boolean aux = true;
		switch (_id){
		case 1:
			aux= estadoInput1;
			break;
		case 2:
			aux= estadoInput2;
			break;
		case 3:
			aux= estadoInput3;
			break;
		}
		return aux;
	}

// maquina cambia el actualizar,cambiar codigo de maquina
	
public void updateMaquina(boolean x,boolean y, boolean z, int _id){
	
	
	
	switch (_id){
	
	case 1:
		this.estadoMaquina1 = x;
		this.estadoM1_Lugar1 = y;
		this.estadoM1_Lugar2 = z;
		
		break;
	case 2:
		this.estadoMaquina2 = x;
		this.estadoM2_Lugar1 = y;
		this.estadoM2_Lugar2 = z;
		
		break;
	case 3:
		this.estadoMaquina3 = x;
		this.estadoM3_Lugar1 = y;
		this.estadoM3_Lugar2 = z;
		
		break;
	case 4:
		this.estadoMaquina4 = x;
		this.estadoM4_Lugar1 = y;
		this.estadoM4_Lugar2 = z;
		
		break;
	
	}
}	

public boolean getEstadoMaquina(int _id){
	boolean aux = true;
	switch (_id){
	case 1:
		aux= estadoMaquina1;
		break;
	case 2:
		aux= estadoMaquina2;
		break;
	case 3:
		aux= estadoMaquina3;
		break;
	case 4:
		aux= estadoMaquina4;
		break;
	}
	return aux;
}


}